<?php
#!/bin/bash

/**
 * User: hzbskak
 * Date: 2020/1/7 - 15:01
 */

namespace app\admin\controller;


use app\admin\model\AdAdminLoginLogModel;
use app\admin\model\BsAdminModel;
use think\Controller;
use think\Loader;

/**
 * 后台用户登录
 * Class Login
 * @package app\admin\controller
 */
class Login extends Controller
{

    /**
     * 后台用户登录
     * @date 2020年1月17日16:22:07
     * --------------
     * 已经登录的直接跳转到首页
     * 只打开页面时：判断cookie中是否有用户信息，有的话到页面赋值
     * 进行提交登录时：验证参数合法性，执行登录方法@see BsAdminModel::login，保存日志
     * --------------
     * @return array|mixed
     * @throws \think\Exception
     * @throws \think\db\exception\DataNotFoundException
     * @throws \think\db\exception\ModelNotFoundException
     * @throws \think\exception\DbException
     * @throws \think\exception\PDOException
     */
    public function login()
    {
        if( session('id')) // 有cookie存在直接跳过登录
        {
            $this->redirect( 'admin/index/common');
        }
        if( input( 'post.')) // 提交登录信息
        {
            // 验证器验证
            $validate = Loader::validate('BsAdmin');
            if( !$validate->check( input( 'post.'))){
                return ['code' => -1, 'err' => $validate->getError()];
            }
            // 登录验证主方法
            $result = BsAdminModel::login( input( 'post.'));
            AdAdminLoginLogModel::saveToLog( $result, input( 'post.')); // 写入日志
            return $result;
        }

        // 记住用户信息
        cookie( '?adminLogin')
            ? $this->assign( 'adminLogin', cookie( 'adminLogin'))
            : $this->assign( 'adminLogin', [ 'username' => '', 'password' => '', 'remPass' => '']);

        return $this->fetch( '/login');
    }

    /**
     * 退出登陆
     * @date 2020年1月17日16:22:20
     * --------
     * 保存日志、清除session
     * --------
     * @return bool
     * @throws \think\db\exception\DataNotFoundException
     * @throws \think\db\exception\ModelNotFoundException
     * @throws \think\exception\DbException
     */
    public function logout()
    {
        // 写入日志
        AdAdminLoginLogModel::saveToLog( ['code' => 1 , 'err' => '注销登录']);
        // 清除session
        session( 'id', null);
        session( 'user', null);
        return true;
    }
























}